amd iommu: Enable FC bit in iommu host level PTE
authorWei Wang <wei.wang2@amd.com>
Thu, 12 Jan 2012 12:54:28 +0000 (13:54 +0100)
committerWei Wang <wei.wang2@amd.com>
Thu, 12 Jan 2012 12:54:28 +0000 (13:54 +0100)
Signed-off-by: Wei Wang <wei.wang2@amd.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
xen/drivers/passthrough/amd/iommu_map.c

index 772f30fe894a87a72ceb51bd8c14aa0e77bc826e..43bf5e53a254ee1e30456c059fce594df57b8760 100644 (file)
@@ -83,6 +83,13 @@ static bool_t set_iommu_pde_present(u32 *pde, unsigned long next_mfn,
     set_field_in_reg_u32(ir, entry,
                          IOMMU_PDE_IO_READ_PERMISSION_MASK,
                          IOMMU_PDE_IO_READ_PERMISSION_SHIFT, &entry);
+
+    /* FC bit should be enabled in PTE, this helps to solve potential
+     * issues with ATS devices
+     */
+    if ( next_level == IOMMU_PAGING_MODE_LEVEL_0 )
+        set_field_in_reg_u32(IOMMU_CONTROL_ENABLED, entry,
+                             IOMMU_PTE_FC_MASK, IOMMU_PTE_FC_SHIFT, &entry);
     pde[1] = entry;
 
     /* mark next level as 'present' */